package com.smart.home.enums;

/**
 * 有线输入输出状态按钮定义
 * 目前该设备（SMART001）提供8个有线控制开关
 *
 * @author zhangpeng
 * @version 1.0
 * @date 2017-03-09
 */
public enum WireButtonEnum {

    BUTTON_1("按钮1", "0000"),
    BUTTON_2("按钮2", "0001"),
    BUTTON_3("按钮3", "0002"),
    BUTTON_4("按钮4", "0003"),
    BUTTON_5("按钮5", "0004"),
    BUTTON_6("按钮6", "0005"),
    BUTTON_7("按钮7", "0006"),
    BUTTON_8("按钮8", "0007");

    /**
     * 名称
     */
    private String label;
    /**
     * 按钮代码
     */
    private String buttonCode;
    /**
     * 输入按钮执行代码前缀
     */
    private final String INPUT_PREFIX = "AA";
    /**
     * 输出按钮执行代码前缀
     */
    private final String OUTPUT_PREFIX = "BB";
    /**
     * 按钮执行代码后缀(结束符号)，每个命令必须添加
     */
    private final String POSTFIX = "01";
    /**
     * 输入按钮执行协议占位符
     */
    private final String INPUT_EXE = "00";
    /**
     * 输入按钮名称查询协议占位符
     */
    private final String SEARCH_NAME = "11";

    WireButtonEnum(String label, String buttonCode) {
        this.label = label;
        this.buttonCode = buttonCode;
    }

    /**
     * 获取输入按钮名称执行协议
     *
     * @return
     */
    public String getSearchInputButtonNameCode() {
        return INPUT_PREFIX + buttonCode + SEARCH_NAME + POSTFIX;
    }

    /**
     * 获取输出按钮名称执行协议
     *
     * @return
     */
    public String getSearchOutputButtonNameCode() {
        return OUTPUT_PREFIX + buttonCode + SEARCH_NAME + POSTFIX;
    }

    /**
     * 获取输入执行协议
     *
     * @return
     */
    public String getInputExeCode() {
        return INPUT_PREFIX + buttonCode + INPUT_EXE + POSTFIX;
    }

    /**
     * 获取输出执行协议
     *
     * @param sh 状态操作
     * @return
     */
    public String getOutputExeCode(SwitchEnum sh) {
        return OUTPUT_PREFIX + buttonCode + sh.getCode() + POSTFIX;
    }

    public String getLabel() {
        return label;
    }

    public String getButtonCode() {
        return buttonCode;
    }
}
